///**
// * @Title: Bucket.java
// * @Description:
// * @author zsw
// * <p>
// * Copyright(C) 2018-2019    NPlus
// * Company:   无锡核心信息科技有限公司
// * @version V2.0.0
// * @Date: 9:15 2020/8/6
// * <p>
// * 修改历史:
// * Date                 Author        Version        Description
// * -----------------------------------------------------------------------------------
// * 9:15 2020/8/6       zsw        2.0.0           初始化版本
// */
//package com.example.springjpa.util;
//
//import org.springframework.scheduling.annotation.Scheduled;
//
//import java.time.LocalDateTime;
//import java.time.format.DateTimeFormatter;
//import java.util.HashMap;
//import java.util.Objects;
//
//public class Bucket {
//    //默认容量10
//    static final int DEFAULT_MAX_COUNT = 10;
//    // 默认增长速率为1
//    static final int DEFAULT_CREATE_RATE = 1;
//    public static volatile HashMap<String, Bucket> buckets = new HashMap(10);
//
//    final String name;
//    final int maxCount;
//    //当前令牌数
//    int size;
//    int createRate;
//
//    public Bucket() {
//        maxCount = DEFAULT_MAX_COUNT;
//        createRate = DEFAULT_CREATE_RATE;
//        name = buckets.size() + "bucket";
//    }
//
//    public Bucket(String name, int maxCount, int createRate) {
//        this.name = name;
//        this.maxCount = maxCount;
//        this.createRate = createRate;
//    }
//
//    @Override
//    public boolean equals(Object obj) {
//        if (obj == null)
//            return false;
//        Bucket bucket = (Bucket) obj;
//        if (bucket.size != size || bucket.createRate != createRate || bucket.maxCount != maxCount)
//            return false;
//        return true;
//    }
//
//    @Override
//    public int hashCode() {
//        return Objects.hash(maxCount, size, createRate);
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public int getSize() {
//        return size;
//    }
//
//    public boolean isFull() {
//        return size == maxCount;
//    }
//
//    //根据速率自增
//    public void incrTokens() {
//        for (int i = 0; i < createRate; i++){
//            incrOneToken();
//        }
//
//    }
//
//    //生产一个令牌
//    void incrOneToken() {
//        if (isFull()) {
//            return;
//        }
//
//        size++;
//    }
//
//    //消费一个
//    public boolean getToken() {
//        if (size > 0) {
//            size--;
//        } else {
//            return false;
//        }
//
//        return true;
//    }
//
//    @Scheduled(fixedRate = 1000)
//    public void timer() {
//        //获取当前时间
//        LocalDateTime localDateTime = LocalDateTime.now();
//        System.out.println("当前时间为:" + localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//        if (Bucket.buckets.containsKey("seckill")){
//            Bucket.buckets.get("seckill").incrTokens();
//        }
//        //如果取到执行
//        if(Bucket.buckets.get("seckill").getToken()){
//            System.out.println("获取到+++++++++++");
//        }
//        else{
//            //
//        }
//
//    }
//
//
//    public static void main(String[] args) {
//
//    }
//}
